import 'dart:io';
import 'package:image_picker/image_picker.dart';

class ImagePickUtil {
  static ImagePicker imagePicker = ImagePicker();

  // static Future<List<XFile>> pickImg(
  //   BuildContext context, {
  //   ImageSource? source,
  //   int limit = 1,
  // }) async {
  //   if (source == null) {
  //     return (await showBottomDialog(context, limit)) ?? [];
  //   } else if (source == ImageSource.gallery) {
  //     return await selectPic(limit);
  //   } else {
  //     return await takePic();
  //   }
  // }

  static List<File> convert2File(List<XFile>? xFiles) {
    if (xFiles == null) {
      return [];
    }
    return xFiles.map((item) => File(item.path)).toList();
  }

  // static Future<List<XFile>?> showBottomDialog(
  //   BuildContext context,
  //   int limit,
  // ) async {
  //   return await showCustomModalBottomSheet<List<XFile>>(context, [
  //     Column(
  //       spacing: 16,
  //       children: [
  //         commonButton(
  //           tapCallback: () async {
  //             Navigator.pop(context, await selectPic(limit));
  //           },
  //           child: Text("Upload from Gallery"),
  //           colorInfo: btnBlackColor,
  //         ),
  //         commonButton(
  //           tapCallback: () async {
  //             Navigator.pop(context, await takePic());
  //           },
  //           child: Text("Take Photo"),
  //           colorInfo: btnBlackColor,
  //         ),
  //         commonButton(
  //           tapCallback: () {
  //             Navigator.of(context).pop();
  //           },
  //           child: Text("Cancel"),
  //           colorInfo: btnGrayColor,
  //         ),
  //       ],
  //     ),
  //   ]);
  // }

  static Future<List<XFile>> selectPic(int limit) async {
    if (limit == 1) {
      XFile? file = await imagePicker.pickImage(source: ImageSource.gallery);
      return [?file];
    } else {
      var files = await imagePicker.pickMultiImage();
      if (files.length > limit) {
        files.removeRange(limit, files.length);
      }
      return files;
    }
  }

  static Future<List<XFile>> takePic() async {
    XFile? file = await imagePicker.pickImage(source: ImageSource.camera);
    return [?file];
  }
}
